package top.mcwebsite.playandroid.business.me.impl.coin.ui

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.Close
import androidx.compose.material.icons.sharp.Close
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import com.google.accompanist.web.WebView
import com.google.accompanist.web.rememberWebViewState
import top.mcwebsite.playandroid.common.uiWidget.CustomDialog
import top.mcwebsite.playandroid.lib.markdown.Markdown
import top.mcwebsite.playandroid.strings.Str

const val COIN_RULE_URL = "https://www.wanandroid.com/blog/show/2653"

@Composable
fun CoinRuleDialog(
    isShow: Boolean,
    onDismissRequest: () -> Unit
) {
    if (!isShow) {
        return
    }
    CustomDialog(onDismissRequest = onDismissRequest) {
        Column(
            modifier = Modifier
                .fillMaxWidth(0.8f)
                .fillMaxHeight(0.9f)
        ) {
            // TODO 坏的，有一些奇奇怪怪的问题，用一个新的页面来展示规则把
//                WebView(
//                    rememberWebViewState(url = COIN_RULE_URL),
//                    modifier = Modifier
//                        .background(color = MaterialTheme.colorScheme.surface, shape = RoundedCornerShape(25.dp))
//                        .width(300.dp)
//                        .height(500.dp)
//                )
            Column(
                modifier = Modifier
                    .fillMaxWidth()
                    .weight(1f)
                    .background(MaterialTheme.colorScheme.surface, shape = RoundedCornerShape(10.dp))
                    .padding(10.dp)
                    .verticalScroll(rememberScrollState())
            ) {
                Markdown(input = COIN_RULE_CONTENT)
            }
            Box(
                modifier = Modifier
                    .height(100.dp)
                    .fillMaxWidth(), contentAlignment = Alignment.Center
            ) {
                CloseButton {
                    onDismissRequest()
                }
            }
        }
    }
}

@Composable
private fun CloseButton(
    onClick: () -> Unit
) {
    IconButton(
        modifier = Modifier
            .background(MaterialTheme.colorScheme.surface, shape = CircleShape),
        onClick = onClick,
    ) {
        Icon(
            imageVector = Icons.Rounded.Close,
            contentDescription = stringResource(id = Str.close),
            modifier = Modifier.size(32.dp)
        )
    }
}

const val COIN_RULE_CONTENT = """
为了感谢在本站比较活跃的用户，本站开发了签到积分功能。

后续将根据积分，暂定每月赠送一些小礼品给大家，**目前礼品还没想法，可能是图书、电子产品一类，排行榜待开发**，到时候会在首页宣布获奖者。

## 积分规则

### 获取积分

**1. 每日登陆积分 ： 基数 + 登陆次数**

>只看登陆天数，不管中间间断没间断。

基数默认为 10，每个基数对应最大值为 10 + 29，然后基数增加为 11 ，从 11 + 0 ~ 11 + 29 ，周而复始。

>由于本功能上线后，灰度期间有一些 bug，所以部分用户的签到记录会出现同一天同一秒签到两次的情况，这个数据不准备去除了，就当是学艺不精，留下的悔恨的泪水吧。

**2. 分享文章**

每天仅第一篇会增加积分，避免不必要分享。

基数默认为 10，每个基数对应最大值为 10 + 29，然后基数增加为 11 ，从 11 + 0 ~ 11 + 29 ，周而复始。

## 积分用途

1. 领取本站合作礼包，例如：极客时间 199 礼包
2. 投递文章免审核（一定积分开启）
3. 投递文章直接进入首页（一定积分开启）
4. 开发文章功能（一定积分开启）

## 每天积分打满

1. 登录一次
2. 在广场 tab 分享一次文章（必须要登录，可以无视 1）

## 特殊奖励

1. 报备严重 bug，例如 首页崩溃，严重影响用户体验 +66
2. 报备其他 bug，或者优化 +10

注意 bug 一定要在 https://github.com/hongyangAndroid/wanandroid/issues 上提出，确定是 bug 会添加 bug 标签，当然要留下用户名。

会在积分描述说明清楚为何加分。
"""